home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / machserver / notes / old.new / timeline.details < prev    next >
Encoding:
Text File  |  1992-04-15  |  6.7 KB  |  159 lines

  1. * (August)
  2. * client can map file read/write into its address space
  3. * VM error handling (permissions, non-existent pages)
  4. * server has no-op locking calls in place
  5. * client is backed entirely by single-threaded Sprite pager
  6.  
  7. * (September)
  8. * ds5000 running Mach 3.0 installed, but not used for Sprite work
  9. * server is multi-threaded, with coarse-grained locking 
  10. ** add real condition variables
  11. *** look for Sync_Wait calls that were if'd out.
  12. ** fix code to read requests and fork off a thread 
  13.    Have a queue of messages for each segment, with an "active" flag
  14.    telling if there is currently a server process working on that
  15.    segment.  Note that the pager routines shouldn't keep the segment
  16.    locked for a long time; use a reference instead.  Change "destroy"
  17.    routine to wait until the segment has been cleaned and invoke
  18.    memory_object_destroy itself?
  19. ** Add code to Sys_Shutdown to check for pending operations (esp. VM)
  20. ** Ditch the numSegments hack?
  21. ** Fix Proc_GetCurrentProc to deal with kernel and user processes correctly.
  22. ** Fix StartClient to work in context of multithreaded server
  23. ** set up process information for the first server thread.
  24. ** Make sure Sync debugging code is in place
  25.    This is the native Sprite lock paranoia code & the lock ownership
  26.    code.  You might not want to actually turn it on.
  27. ** Fix DoStack to use vm_write to initialize the stack page.
  28. * client can fork and exec children
  29. ** remove stuff from Proc_NewProc that is specific to initial process.
  30. ** Check calls that operate on task/thread in case the object has disappeared
  31. ** server can pass argument of file through server to client.
  32. ** review notes in callsProc & review process state transition table
  33. *** review Proc_Flags (any to get rid of?)
  34. ** run overnight test program to do lots of fork/exec
  35.    (e.g., have a tree of processes that update the time of day in a
  36.    shared memory region)
  37. * server can read time-of-day chip
  38. * (review callsProc, callsVm, newVm, and changes lists)
  39.  
  40. * (October)
  41. * doing all work on ds5000
  42. * server can ping a native Sprite system (i.e., RPC's work)
  43. ** fix UX to not grab all packets?
  44.    If the packet filter allows multiple recipients of a packet, then
  45.    having the UX server get Sprite packets is merely a performance
  46.    problem. 
  47. ** when Sprite server exits, does it need to deregister its packet filter?  
  48.    (See the mail "Net filters" in +mach.)
  49. ** Make sure you can do many RPC's before declaring success.
  50.    (e.g., at least 1K)
  51. * client calls through emulation library, which then invokes MIG stub
  52. ** client uses real printf?
  53. ** use mapped-file stdio?
  54. ** pass path names in MIG request (versus having server do CopyIn)?
  55. * (SOSP)
  56.  
  57. * (November)
  58. * Proc_ServerProc's work (change timer queue to use message w/ timeout)
  59. ** Fix Timer_Statistics?
  60.   A cleanup job would be to ditch the Proc_Time stuff and just use
  61.   Time everywhere.
  62. ** Enable procTimer.c & other SPRITED_TIMER stuff.
  63. * file system works 
  64. ** client can read & write file from Sprite file server
  65. ** cache memory is static & pinned
  66. ** rerun the object file/mapped file tests (listed in 1 September notes).
  67. ** Look for SPRITED_REALFS ifdefs.
  68.    Put in a mousetrap to make sure that anarchy doesn't think it's the
  69.    root file server.
  70.    Fix or disable Fs_AcceptStub, so that it doesn't try to treat a
  71.    kernel address as a user address.  Maybe better to just not include
  72.    fsSocketStubs at all, at least initially?
  73. ** verify that process cwd, umask, and groups are handled correctly.
  74. ** verify that file inheritance across fork works
  75.    See /sprite/src/tests/syscalls/fork.
  76.    Don't forget to change malloc etc. to use ckalloc.
  77. * (review changes list)
  78.  
  79. * (December)
  80. * client can page across network
  81. ** Check remaining uses of SPRITED_REALFS.
  82.    Make sure FS handle's segPtr gets updated correctly.  Are there
  83.    other fields that need fixing as well?
  84.    Look at the 1.098 Vm_Recovery().  Put what you need into sprited.
  85.    Fix the swap directory path.
  86.    Try a test where enough pages are dirtied that all the
  87.    Proc_ServerProcs are used for VM work and are stuck waiting for
  88.    recovery.  When the server comes back, does the system recover, or
  89.    is it permanently wedged?
  90.    Redo old VM tests (e.g., file mapping).
  91.    Another test: make sure the VM code deals with stale handles
  92.    correctly.  
  93. ** Testing
  94. *** run thrasher
  95.    Pay particular attention to interaction & possible race conditions
  96.    between the file system and VM.
  97. *** Verify that setuid stuff works?  (Maybe just put in "cleanups" list.)  
  98.    Have to re-enable Fs_CheckSetID call in DoExec.
  99. * start on signals
  100. ** Fix Sig_Handle 
  101.    It shouldn't assume that procPtr is for the current proc. (done?)
  102. ** Enable SPRITED_SIGNALS
  103. ** put signals-related fields into PCB.
  104.    Fix code that computes signals mask to use macro (use your recent kernel
  105.    changes).
  106.    Incorporate proc changes for suspend/resume race.
  107. * (short Christmas vacation)
  108.  
  109. * (January 1992)
  110. * client can send, catch signals
  111. ** Look for XXX'd code that should use signals.
  112. ** Check over calls to Proc_Kill & check Proc_Kill code itself.
  113.    Check references to PROC_NO_MORE_REQUESTS.
  114.    Make sure that the signal has been handled (either the process's
  115.    thread has been killed or the setup for the signal handler has been
  116.    done) before returning from catch_exception_raise.
  117. ** Turn on procDebug.c code?
  118. ** Should shell scripts work at this point?
  119. ** Check use of SPRITED_SIGNALS in libc.
  120. * (XPRS retreat)
  121.  
  122. * (February)
  123. * work on C library
  124. * access to console device.
  125.   Check for SPRITED_DEVICES in libc & test programs.  Rerun stdio
  126.   test.
  127.   Verify that "cp -i" & "mv -i" do the Right Thing.
  128. * be able to run gcc, maybe vi.
  129.   Should be able to run: file utils, gcc, bin utils, pmake, mkmf, sh,
  130.   csh, ex (if not vi), gdb; date.
  131.   Would like to run: Emacs, troff (?), TeX, X (?), inetd, telnetd
  132. * (review changes list)
  133.   Should be able to run a pseudo-file server?
  134. * Change to use a version number for the server.
  135.  
  136. * (March)
  137. * run benchmarks, find bottlenecks
  138.   Look for performance/benchmarking suites.  Do any of them exercise the
  139.   variable FS cache size?
  140.   Look in /sprite/src/benchmarks.
  141.   Try the BYTE benchmarks (in ~/src/byte)?
  142.   WPI benchmarks?
  143. * start fixing bottlenecks
  144.   Look at benchmarking programs in Sprite sources.  Try to come up
  145.   with a realistic benchmark that makes the FS cache grow and shrink.
  146.   (According to the SOSP paper, what are the primary reasons for
  147.   removing a block from the FS cache?)
  148.   For the Andrew benchmark, fix MACHINEID to (also?) do a sysstat -v.
  149.   Also, the first time you run it, check timer_Statistics, to verify
  150.   that you're not getting burned by the timer problems.
  151.   Note that UX28 apparently implements vfork() using fork().
  152. ** Look in perf for ideas on things to measure.
  153. * (April)
  154. * more benchmarks, performance work
  155.  
  156. Local Variables:
  157. mode: outline
  158. End:
  159.